#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H

#include <QWidget>
#include <QMessageBox>
#include <QKeyEvent>
#include "databasemanager.h"
#include "mainwindow.h"
#include "registerdialog.h"

namespace Ui {
class LoginDialog;
}

class LoginDialog : public QWidget
{
    Q_OBJECT

public:
    explicit LoginDialog(QWidget *parent = nullptr);
    ~LoginDialog();

protected:
    // 键盘事件处理
    void keyPressEvent(QKeyEvent *event) override;

private slots:
    // 登录按钮点击事件
    void on_loginButton_clicked();
    
    // 注册按钮点击事件
    void on_registerButton_clicked();
    
    // 退出按钮点击事件
    void on_exitButton_clicked();
    
    // 用户名输入框回车事件
    void on_usernameEdit_returnPressed();
    
    // 密码输入框回车事件
    void on_passwordEdit_returnPressed();

private:
    Ui::LoginDialog *ui;
    DatabaseManager *m_dbManager;
    MainWindow *m_mainWindow;
    RegisterDialog *m_registerDialog;
    
    // 验证登录信息
    bool validateLogin(const QString &username, const QString &password);
    
    // 显示错误信息
    void showError(const QString &message);
    
    // 显示成功信息
    void showSuccess(const QString &message);
    
    // 清空输入框
    void clearInputs();
    
    // 打开主窗口
    void openMainWindow(const User &user);
    
    // 打开注册窗口
    void openRegisterDialog();
};

#endif // LOGINDIALOG_H
